//axios配置文件
import axios from 'axios';
import { Notification } from 'element-ui';
import router from '@/router/index'
	//baseURL：自动补全域名
	axios.defaults.baseURL = 'http://localhost:3001';

// 添加请求拦截器
axios.interceptors.request.use(function (config) {
	// 在发送请求之前做些什么
	// 设置headers
	let access_token = sessionStorage.access_token;
	config.headers.Authorization = `Bearer ${access_token}`;
	return config;
}, function (error) {
	// 对请求错误做些什么
	return Promise.reject(error);
});


// 添加响应拦截器
axios.interceptors.response.use(function (response) {
	// 2xx 范围内的状态码都会触发该函数。
	// 对响应数据做点什么
	return response.data;
}, function (error) {
	// 超出 2xx 范围的状态码都会触发该函数。
	// 对响应错误做点什么
	let { status } = error.response;
	let { message } = error.response.data.inner;
	let { url } = error.config;
	switch (status) {
		case 401:

			Notification.error({
				title: `错误:${status}--${message}`,
				message: 'access_token失效，请重新登录'
			});
			let {fullPath}=router.history.current;
			router.replace({path:'/login',query:{redirect:fullPath}});
			break;
		case 403:

			Notification.error({
				title: `错误:${status}`,
				message: `API接口：${url}访问未授权`
			})
			break;
		case 404:
			Notification.error({
				title: `错误:${status}`,
				message: `API接口:${url}地址错误`
			})
			break;
		case 500:
			Notification.error({
				title: `错误:${status}`,
				message: `API接口:${url}请联系后端工程师`
			})
			break;
		default:
			Notification.error({
				title: `错误:${status}`,
				message: `API接口:${url}请查看AJAX发送记录`
			})
			break;
	}
	return Promise.reject(error);
});
